import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  // 私有属性 _token 和 _key
  String? _token;
  final _key = 'enjoy-plus-key';

  // 私有实例对象
  static TokenManager? _instance;
  // 自定义构造函数 - 返回一个TokenManager类的实例对象
  TokenManager._internal();

  // 默认的构造函数 - 可以省略不写
  // 执行时机, 外部创建实例 - 自动执行
  factory TokenManager() {
    _instance ??= TokenManager._internal();
    return _instance!;
  }

  // 获取token
  Future init() async {
    // 获取数据仓库的实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    // 读取token并赋值
    _token = prefs.getString(_key);
  }

  // 存储token
  Future setToken(String token) async {
    _token = token;
    // 获取数据仓库的实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString(_key, token);
  }

  // 同步获取token
  String? getToken() {
    return _token;
  }

  // 删除token
  Future removeToken() async {
    _token = null;
    // 获取数据仓库的实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.remove(_key);
  }
}

// 创建实例对象 => 创建了一个对象 => 在堆内存中开辟了一个空间进行存储
// // A页面
// const token1 = TokenManager();

// // B页面

// const token2 = TokenManager();
